CRC is a type of hash function used to generate a checksum corresponding to a block of data, such as a communication packet. CRC may be used to detect data transmission errors. For example, a CRC value for a packet may be calculated prior to transmitting the packet and after the packet is received at a destination. These CRC values may be compared to detect data transmission errors.
CRCs can be calculated using any number of techniques which may offer different advantages and disadvantages depending on the situation. In hardware implementations, CRCs are calculated using circuit logic on, for example, an integrated circuit which may receive data blocks (e.g., data packets) as input and output CRCs corresponding to each block. Generally, the circuit logic required to calculate CRCs increases as the size of the data block increases. For example, in some implementations, halving the size of the data block being used to calculate the CRC exponentially decreases the size of the circuit logic. Thus, calculating a CRC for a large block of data by combining CRCs representing smaller blocks of data may decrease the overall size of the circuit logic needed.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially utilized on other embodiments without specific recitation.